import { defineConfig,loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'

const path = require('path');

// vant 按需引入
import Components from 'unplugin-vue-components/vite';
import { VantResolver } from 'unplugin-vue-components/resolvers';

import postcsspxtoviewport from './src/plugin/postcss-px-to-viewport-8-plugin/lib'


// https://vitejs.dev/config/
export default defineConfig( ({ command, mode })=>{
    const env = loadEnv(mode, process.cwd(), '')  // 读取环境变量
    return {
      plugins: [
        vue(),
        Components({
          resolvers: [VantResolver()],
        }),
      ],
      base:'/',
      resolve:{
        alias:{
          "@":path.resolve(__dirname,'./src'),
          'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js',
        }
      },
      css: {
        postcss: {
          plugins: [
            postcsspxtoviewport({
              unitToConvert: "px", // 要转化的单位
              viewportWidth: 812, // UI设计稿的宽度
              unitPrecision: 6, // 转换后的精度，即小数点位数
              propList: ["*"], // 指定转换的css属性的单位，*代表全部css属性的单位都进行转换
              viewportUnit: "vh", // 指定需要转换成的视窗单位，默认vw
              fontViewportUnit: "vh", // 指定字体需要转换成的视窗单位，默认vw
              //selectorBlackList: ["wrap"], // 指定不转换为视窗单位的类名，
              minPixelValue: 1, // 默认值1，小于或等于1px则不进行转换
              mediaQuery: true, // 是否在媒体查询的css代码中也进行转换，默认false
              replace: true, // 是否转换后直接更换属性值
              exclude: [/node_modules/], // 设置忽略文件，用正则做目录名匹配
              landscape: true, // 是否处理横屏情况
              landscapeUnit: 'vh', // (String) 横屏时使用的单位
              landscapeWidth: 812 // (Number) 横屏时使用的视口宽度
            })
          ]
        }
      },
      // define:{
      //   'process.env':process.env
      // },
      // 本地运行配置，及反向代理配置
      server: {
          host: "0.0.0.0", // 可以使用ip访问，不设置则只能用localhost访问
          //cors: true, // 默认启用并允许任何源
          //open: true, // 在服务器启动时自动在浏览器中打开应用程序
          //反向代理配置，注意rewrite写法，开始没看文档在这里踩了坑
          proxy: {
            '/api': {
              target:env.VITE_APP_API_SEARVER, //'https://www.dev.metayuanjie.com/', //'https://www.tst.metayuanjie.com/',
              changeOrigin: true,
              ogLevel:'debug',
              rewrite: (path) => path.replace(/^\/api/, '')
            }
          }
      }
    }
  })
